<?php

/**
 * Communication form.
 *
 * @package    tfe
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class CommunicationForm extends BaseCommunicationForm {
    public function configure() {
        unset($this['created_at'], $this['updated_at'], $this['deleted_at']);

        $dateWidget = new sfWidgetFormI18nDate(array(
                        'format' => '%day%/%month%/%year%',
                        'culture'=>'fr'
        ));
        $this->widgetSchema['date'] = new sfWidgetFormJqueryDate(array(
                        'date_widget' => $dateWidget,
                        'culture'=>'fr_FR'
        ));

        $this->widgetSchema['id_contact']->setOption('renderer_class', 'sfWidgetFormDoctrineJQueryAutocompleter');
        $this->widgetSchema['id_contact']->setOption('renderer_options', array(
                'model' => 'Contact',
                'url'   => '/contact/autocomplete',
        ));

        $this->widgetSchema['id_groupe']->setOption('renderer_class', 'sfWidgetFormDoctrineJQueryAutocompleter');
        $this->widgetSchema['id_groupe']->setOption('renderer_options', array(
                'model' => 'Groupe',
                'url'   => '/groupe/autocomplete',
        ));



        // check des champs contact et groupe
        $v = new sfValidatorCallback(array(
                        'callback' => array($this, 'verifierContactOuGroupe'))) ;

        $this->validatorSchema->setPostValidator($v);
        

    }

    // Vérifier que les champs id_contact et id_groupe sont remplis, mais pas ensemble !
    // cette fonction est appelée par un validateur de type Callback dans les sous-classes de formulaires d'Inscription
    public function verifierContactOuGroupe($validator, $value) {
        if ((!empty($value['id_contact']) && !empty($value['id_groupe'])) || (empty($value['id_contact']) && empty($value['id_groupe']))) {
            throw new sfValidatorError($validator, 'invalid');
        }

        return $value;
    }
}
